home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / basicaid.arc / BASICAID.DOC next >
Text File  |  1985-08-26  |  12KB  |  279 lines

  1.  
  2.  
  3.  
  4.                             BASICAID
  5.  
  6.                  THE BASIC PROGRAMMERS FRIEND
  7.  
  8.                               BY
  9.  
  10.                        JAMES P. MORGAN
  11.                   1749 AMERICANA BLVD APT 23-G
  12.                       ORLANDO FLA. 32809
  13.                        PH 305-826-7297
  14.  
  15.  
  16.    HAVE YOU EVER ACQUIRED A BASIC PROGRAM FROM A FRIEND AND SPENT ALOT OF
  17. TIME JUST TRYING TO UNTANGLE THE PROGRAM LOGIC AND STATEMENTS, OF COURSE YOU
  18. HAVE.
  19.  
  20.   SINCE EACH PERSONS PROGRAMMING STYLE IS DIFFERENT , SUCH AS SPACING, INDEN-
  21. TATION AND SUCH, YOU COULD USE YOUR TIME BETTER IF ALL PROGRAMS WERE ABOUT
  22. THE SAME STYLE.
  23.  
  24.    ARE YOU A OPTIMIZATION AND SPEED NUT , AS I AM, ESPECIALLY WHEN RUNNING
  25. A PROGRAM UNDER THE INTERPRETER. I DONT'T LIKE TO WAIT A SECOND LONGER THAN
  26. NECESSARY. OF COURSE BY NOW I USE THE BASIC COMPILER AS MUCH AS POSSIBLE,
  27. SINCE I WOULD RATHER WAIT 2 MINUTES THAN HAVE TO WAIT 20 MINUTES TO SEE
  28. THE RESULTS OF MY SWEAT , BLOOD AND LOST SLEEP.
  29.  
  30.    I HAVE SEEN SEVERAL PACKAGES , NOT ALL WITH THE SAME FUNCTIONS OR
  31. RANGE SELLING FROM 20 TO 80 DOLLARS. WELL THIS IS 6 MONTHS OF WORK
  32. , TO YOU FOR FREE. HOW ABOUT THE PRICE TAG ON THIS.
  33.  
  34.    YOU ASK WHAT WILL THIS PROGRAM DO FOR ME, PAY MY TAXES MAYBE. WELL
  35. NO, IT WON'T PAY YOUR TAXES BUT IT SHOULD MAKE YOUR LIFE A LITTLE EASIER.
  36.  
  37.    AS A BASIC OVERVIEW THE PROGRAM WILL, COMPRESS A BASIC PROGRAM AND REMOVE
  38. REMARKS, EXPAND A PROGRAM BY THAT I MEAN IT WILL SEPARATE MULTIPLE STATEMENTS
  39. PER BASIC LINE INTO ONE OR MORE STATEMENTS, GENEREATE CROSS REFERENCES ON
  40. PROGRAM VARIABLES AND BASIC RESERVED WORDS, AND PROBABLY THE MOST IMPORTANT
  41. WILL GENERATE A CROSS REFERENCE SHOWING ALL REFERENCES TO A SPECIFIC LINE NUMBER,
  42. THAT WERE REFERENCED BY A GOTO,GOSUB,ELSE,THEN,ERL,RESTORE OR RESUME STATEMENT.
  43.  
  44.  YOU CAN THEN FIND ALL VARIABLES, AREAS OF CODE AND SUCH THAT ARE NOT
  45. REFERENCED (AND REMOVE FOR STORAGE SAVINGS) AS WELL AS AN OVERVIEW OF
  46. PROGRAM FLOW TO FIND OUT HOW THE PROGRAM GOT TO A SPECIFIC LINE NUMBER.
  47.  
  48.      EACH FUNCTIONAL OPTION OF THE PROGRAM IS DISCUSSED BELOW:
  49.  
  50.  
  51.       1).  EXPAND A BASIC PROGRAM
  52.            ----------------------
  53.  
  54.           WILL EXPAND A COMPRESSED PROGRAM, ONE THAT HAS MULTIPLE
  55.         BASIC STATEMENTS PER LINE, SEPARATED BY A ":" INTO ONE OR
  56.         MORE UNIQUELY NUMBERED BASIC LINES WITH ONE OR MORE STATEMENTS
  57.         PER LINE.
  58.  
  59.           DURING THE EXPANDING SOME TEXT COMPRESSION WILL BE DONE,
  60.         TO REMOVE EXTRANEOUS SPACES AND SUCH.
  61.  
  62.           ALSO AN EXPANDED LISTING CAN BE REQUESTED, THAT WILL BE PRINTED
  63.         DURING THE EXPANSION.
  64.  
  65.           AN EXPANDED, OUTPUT DISK FILE, CALLED "TEMPFILE.BAS" WILL
  66.         BE CREATED ALSO. RENAME THE "TEMPFILE.BAS" IF YOU WANT TO SAVE
  67.         IT AS THE NEW VERSION OF YOUR PROGRAM.
  68.  
  69.           NOTE THAT THE INPUT BASIC PROGRAM BEING EXPANDED MUST BE
  70.         SUFFICIENTLY SEQUENCED TO ALLOW THE INSERTION OF NEW LINES
  71.         OR THE PROGAM WILL END WITH SUCH A MESSAGE. FOR EXAMPLE IF
  72.         THERE ARE 7 BASIC STATEMENTS ON A LINE, SEPARATED BY ":",
  73.         THEN IF THE ORIGINAL PROGRAM WAS NUMBER BY 5'S THE PROGRAM
  74.         WILL SEPARATE THE LINE INTO 6 MORE BASIC LINES EACH WITH A
  75.         LINE NUMBER 1 GREATER THAN THE PREVIOUS LINE NUMBER.
  76.  
  77.  
  78.       2).  COMPRESS A BASIC PROGRAM
  79.            ------------------------
  80.  
  81.          WILL COMPRESS TEXT (REMOVE EXTRANEOUS SPACES AND ":" AND SUCH)
  82.        AS WELL AS COMBINE SEPARATE BASIC LINES INTO SINGLE LINES WITH
  83.        AS MANY LOGICAL STATEMENTS PER LINE AS POSSIBLE.
  84.  
  85.         BY LOGICAL I MEAN THAT ANY "REMARK" OR "IF" OR "DATA" STATEMENTS
  86.        WILL NOT HAVE LINES ADDED TO THEM.
  87.  
  88.         ALSO ANY LINE REFERENCED BY A LOGIC BRANCH (GOTO,GOSUB..ECT) WILL
  89.        NOT BE APPENDED TO ANY OTHER LINE.
  90.  
  91.         YOU MAY REQUEST A LISTING OF THE COMPRESSED PROGRAM BE PRODUCED
  92.        DURING THE COMPRESSION RUN, BUT WILL SLOW THE PROGRAM DOWN, UNLESS
  93.        YOU HAVE A SPOOLER.
  94.  
  95.         AN COMPRESSED PROGRAM , DISK FILE,  NAMED "TEMPCOMP.BAS" IS
  96.        CREATED. DON'T FORGET TO RENAME "TEMPCOMP.BAS" IF YOU WANT IT
  97.        TO BE YOUR NEW WORKING VERSION.
  98.  
  99.  
  100.       3).  DATANAME AND RESERVED WORD CROSS REFERENCE
  101.            ------------------------------------------
  102.  
  103.           WILL PRINT A CROSS REFERENCE OF BASIC RESERVED WORDS (SUCH AS
  104.          GOTO,PRINT,CALL..ECT). RESERVED WORDS CAN BE ADDED OR DELETED
  105.          BY CHANGING THE PROGRAM DATA STATEMENTS AT THE END OF THE PROGRAM.
  106.  
  107.           AS YOU ADD OR DELETE RESERVED WORDS KEEP THEM IN ALPHABETIC ORDER,
  108.          SINCE THE PROGRAM TABLES THEM AND DOES A BINARY SEARCH ON THE TABLE.
  109.  
  110.           ALSO CHANGE THE FIRST DATA STATEMENT, THIS IS A COUNT OF THE NUMBER
  111.          OF RESERVED WORDS TO READ AND "DIM" TABLES.
  112.  
  113.           YOU WILL SEE A NUMERIC VALUE AFTER EACH RESERVED WORD ON THE DATA
  114.          STATEMENTS. IF THE VALUE IS ZERO THE RESERVED WORD WILL BE RECOGNI-
  115.          ZED AS SUCH BUT ANY REFERENCES WILL BE IGNORED AND NOT PRINTED.
  116.  
  117.           THERE ARE SEVERAL NUMERIC VALUES, AFTER THE RESERVED WORDS.
  118.          I STARTED TO GROUP THE WORDS ACCORDING TO TYPE AND FUNCTION (
  119.           I/O,BRANCH,STRING,FUNCTION..ECT) AND PROVIDE AND OPTION AS TO WHAT
  120.          FUNCTIONAL CLASS OF RESERVED WORDS WOULD BE X-REFERENCED. YOU MAY
  121.          IMPLEMENT THIS IF YOU DESIRE.
  122.  
  123.            FOR EXAMPLE, IT WOULD BE NICE TO SEE A X-REFERENCE OF ONLY
  124.          LOGIC BRANCH VERBS (GOTO,GOSUB,CALL...ECT), THEN YOU COULD SEE
  125.          WHERE PROGRAM CONTROL WOULD BE TRANSFERED TO.
  126.  
  127.  
  128.            WILL PRINT A CROSS REFERENCE (ASCENDING ON VARIABLE NAME) OF ALL
  129.          USER DEFINED PROGRAM VARIABLES.
  130.  
  131.            THIS WOULD BE GREAT FOR FINDING STATEMENTS THAT DEFINE OR MODIFY
  132.          A VARIABLE.
  133.  
  134.            ANY TYPE OF BASIC EXPLICIT VARIABLE STATE ,SUCH AS "!" OR "#" OR
  135.          "%" OR "$" ARE IGNORED, ONLY THE VARIABLE NAME WHICH CONSISTS OF THE
  136.          CHARACTERS "A-Z","." AND "0-9" ARE CONSIDERED A UNIQUE NAME.
  137.  
  138.            YOU MAY HAVE NOTICED THAT A VARIABLE NAME MAY BE DEFINED AS BEING
  139.          ONE OF SEVERAL VARIABLE TYPES. FOR EXAMPLE "A!" , "A#" , "A%", "A$"
  140.          , "A(" WHERE "A(" IS PART OF A "DIM", WOULD ALL BE RECOGNIZED TO THE
  141.          CROSS REFERENCE AS THE SAME VARIABLE, BUT DIFFERENT BY BASIC.
  142.  
  143.             OH BY THE WAY, YOU MAY DEFINE A VARIABLE WITH A TERMINATING "."
  144.            TO ALSO MAKE IT UNIQUE. FOR EXAMPLE "SPACES" IS A RESERVED WORD,
  145.            BUT "SPACES." OR "SPACES.$" OR "SPACES.%" ARE PROCESSED BY BASIC
  146.            AS USER DEFINED VARIABLES. I JUST DISCOVERED IT AND THOUGHT IT
  147.            WAS A NEAT WAY TO GET AROUND SOME RESTRICTIONS.
  148.  
  149.             ALSO YOU COULD HAVE THE FOLLOWING CODE AND IT WOULD WORK:
  150.  
  151.                10 DIM A(10)
  152.                20 A=0
  153.                30 FOR A=1 TO 10
  154.                40 A(A)=A
  155.                50 NEXT A
  156.                60 END
  157.  
  158.            CONFUSING BUT NEAT, HUH.
  159.  
  160.  
  161.       4).  LINE NUMBER CROSS REFERENCE
  162.            ---------------------------
  163.  
  164.          WILL PRODUCE A (ASCENDING BY LINE NUMBER) CROSS REFERENCE,
  165.        LISTING ANY LINE NUMB╤¬ó!QüWAS REFERENCE BY ANOTHER LINE NUMBER
  166.        AND THE REFERENCING LINE NUMBER.
  167.  
  168.          THIS LINE NUMBER CROSS REFERENCE TABLE IS ALSO USED IN THE
  169.        OPTION TO COMPRESS A PROGRAM. SO THAT WE DONT THROW AWAY "REMARK"
  170.        LINES THAT ARE BRANCHED TO.
  171.          YOU SHOULD USE THE LISTINGS PRODUCED TO CHANGE THE PROGRAM LOGIC
  172.        SUCH THAT IS DOES NOT BRANCH TO ANY NON-EXECUTABLE BASIC STATEMENTS.
  173.  
  174.          THEY JUST SLOW THE PROGRAM DOWN AND MAKE IT HARD TO CHANGE LOGIC
  175.        SINCE REMOVING A REMARK MIGHT CAUSE AN ERROR, DURING RUN TIME OR
  176.        RENUMBERING.
  177.  
  178.          I AM ALL FOR ALOT OF COMMENTS IN A PROGRAM, SINCE I HARDLY EVER
  179.        REMEMBER WHAT THE PROGRAM DOES, IF I PICK IT UP 6 MONTHS LATER,
  180.        OR I TRY TO MODIFY SOMEONE ELSES PROGRAM.
  181.  
  182.         ALSO THE REMARKS TAKE UP PART OF THE "64K" THAT BASIC RUNS IN, SINCE
  183.        THEY ARE STORED EXACTLY AS SEEN ON THE SCREEN, NOT IN ANY TOKENIZED
  184.        FORM.
  185.  
  186.         ALSO NOT BRANCHING TO "REMARKS" WILL ALLOW THE COMPRESS OPTION
  187.        TO REMOVE THAT STATEMENT FROM THE OUTPUT COMPRESSED FILE.
  188.  
  189.         THIS RESULTS IN SAVINGS IN MEMORY WHEN THE PROGRAM IS STORED OR
  190.        LOADED, BUT PRIMARILY WHEN USING THE BASIC COMPILER.
  191.  
  192.         THE BASIC COMPILER MAINTAINS A LINK LIST OF LINE NUMBERS. IF YOU
  193.        DO ANY TYPE OF "ON ERROR" CHECKING IN YOUR BASIC PROGRAM, EACH LINE
  194.        NUMBER , UNDER THESE CONDITIONS , RESULTS IN 4 OR MORE BYTES TO BE
  195.        USED IN THE ".OBJ" (OBJECT) FILE CREATED BY THE COMPILE. YOU COULD SEE
  196.        WHY COMPRESSING THE PRODUCION VERSION OF THE PROGRAM COULD RESULT IN
  197.        MEMORY AND SPEED SAVINGS.A LINK LIST MUST BE SEARCH AND IF YOUR PROGAM
  198.        WAS 500 LINES THEN (500 * (4+)) BYTES MUST BE USED JUST TO MAINTAIN
  199.        THE LINE NUMBER LIST.
  200.  
  201.  
  202.    *********************************************************************
  203.  
  204.  
  205.     MACHINE REQUIREMENTS:   64K
  206.     ---------------------   BASIC
  207.                             MONOCROME/COLOR DISPLAY
  208.                             DISK DRIVE [REAL AND/OR VIRTUAL(RAM)]
  209.                             MX-80 EPSON PRINTER (OPTIONAL)
  210.  
  211.  
  212.     RUNNING THE PROGRAM:
  213.     --------------------
  214.  
  215.     TO RUN USING BASIC ----   INVOKE BASIC FROM DOS AND LOAD AND RUN
  216.  
  217.     WHILE IN DOS KEY IN ---   BASIC/F:3/C:0
  218.  
  219.     IF PROGRAM COMPILED--- THEN JUST TYPE IN THE PROGRAM NAME YOU
  220.                           GIVE IT WHEN YOU LINKED THE PROGRAM
  221.  
  222.     ADDITIONAL COMMENTS:
  223.     --------------------
  224.                             IF YOU COMPILE THIS PROGRAM YOU MUST CHANGE
  225.                           ANY "DIM" STATEMENTS TO A FIXED VALUE, ALSO
  226.                           DONT FORGET TO CHANGE THE ASSOCIATED "DIM"
  227.                           VARIABLE NAME TO AGREE WITH THE FIXED VALUE
  228.                           YOU ASSIGN TO THE ARRAY.
  229.  
  230.                            ALSO CHANGE THE STRING VARAIBLE "VER$" TO
  231.                           A "C" TO INDICATE THE PROGRAM IS RUNNING AS
  232.                           COMPILED, SINCE THE PROGRAM DOES POKE INTO
  233.                           SOME BASIC AREAS ( TO CLEAR KEYBOARD BUFFER)
  234.                           THAT ARE NOT THERE AFTER THE PROGRAM HAS BEEN
  235.                           COMPILED. YOU ARE ASKING FOR TROUBLE IF YOU DON'T.
  236.  
  237.  
  238.                           ALSO I PONDERED ADDING AN OPTION TO REMOVE
  239.                           LINE NUMBERS FROM THE COMPRESSED PROGRAM, IF
  240.                           THE COMPRESSED PROGRAM RUN TIME OPTION SELECTED.
  241.                             THE BASIC COMPILER SAYS HE WILL OPTIMIZE
  242.                           ACROSS BASIC CODE BETTER IF LINE NUMBERS
  243.                           ARE NOT USED.
  244.                             ALSO THE COMPILER WILL PROCESS A BASIC PROGRAM
  245.                           CREATED BY ANY EDITOR. YOU DO NOT HAVE TO INCLUDE
  246.                           LINE NUMBERS IN YOUR BASIC PROGRAM UNLESS YOU
  247.                           WANT TO BRANCH TO A SPECIFIC LINE OF PROGRAM CODE.
  248.  
  249.                             I BELIEVE ALSO THE "LINE-NUMBERS" DON'T HAVE TO
  250.                           BE CONSECUTIVE , JUST UNIQUE.
  251.                             ALSO THE COMPILE INCLUDES AN "COPY-INCLUDE"
  252.                           OPTION AT COMPILE TIME THAT LETS YOU COPY INTO
  253.                           THE BASIC PROGRAM BEING READ OTHER COMMONLY
  254.                           USED CODE AND SUBROUTINES.
  255.                             IF YOU HAVE THE BASIC COMPILER YOU CAN READ
  256.                           ABOUT THIS FURTHER.
  257.  
  258.  
  259.  **********************************************************************
  260.  
  261.  
  262.                           IN CLOSING
  263.                           ----------
  264.  
  265.        I WOULD APPRECIATE ANY COMMENTS AS TO ENHANCEMENTS, BUGS, OR GENERAL
  266.  
  267.   USAGE. YOU MAY MAIL ME A LETTER OR LEAVE A MESSAGE ON WES MERCHANTS BBS
  268.  
  269.  (703-560-0979) OR RICH SCHINNELL'S BBS (301-949-8848).
  270.  
  271.  
  272.           I HOPE THIS LITTLE CONTRIBUTION WILL HELP YOU.
  273.  
  274. BS
  275.  
  276.  (703-560-0979) OR RICH SCHINNELL'S BBS (301-949-8848).
  277.  
  278.  
  279.